package NiuKe;

import java.util.Arrays;
import java.util.Scanner;

public class MeiTuan_01 {

    public static void main(String[] args) {

        MeiTuan_01 mt = new MeiTuan_01();
        Scanner input = new Scanner(System.in);

        int nxy[] = new int[3];//nxy[0]记录参赛人数, nxy[1]下限，nxy[2]上限

        nxy = mt.getArray(input.nextLine(),3);//获取第一行的数据，并分解成数组 nxy

        int score[] = new int[ nxy[0] ];//记录每个人的分数

        score = mt.getArray(input.nextLine(), nxy[0]);//获取每个人的分数，并分解成数组 score

        System.out.println(mt.solve(nxy , score));//输出结果

   }

    public int[] getArray(String str,int n){//字符串分解成整形数组
        int array[] = new int[n];

        String strings[] = str.split(" ");//根据空格分隔字符串

        for (int i = 0 ; i < n ; i++){
            array[i] = Integer.parseInt(strings[i]);
        }

        return array;
    }

    public int solve(int []nxy , int score[]){//计算出m
        int m = -1;

        Arrays.sort(score);

        //一定不存在m的情况：
        //总人数减去下限的人数小于下限
        //总人数减去上限的人数大于上限
        if ( ( (nxy[0] - nxy[1] ) < nxy[1] ) ||  ( (nxy[0] - nxy[2]) > nxy[2] ) ) {
            return -1;
        }

        //确定最少的被刷掉的人数
        int min = 0;
        for(int i = nxy[1] ; i <= nxy[2] ; i++ ){
            if ( (nxy[0] - i ) <= nxy[2]) {
                min = i;
                break;
            }
        }

        //确定最大的被刷掉的人数
        int max = 0;
        for(int i = nxy[2] ; i >= nxy[1] ; i-- ){
            if ( (nxy[0] - i ) >= nxy[1]) {
                max = i;
                break;
            }
        }


        for (int i = min; i <= max ; i++){

            if (i == 0 ) {
               m = 0;
            }

            if (score[i-1] == score[i]) {
                if (i == max ){
                    break;
                }
                continue;
            }
            if (score[i-1] != score[i] ){
                m = score[i-1];
                break;
            }

        }
        return  m;
    }
}
